package com.shou.domain.park.repository;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.shou.domain.common.PageQueryEntity;
import com.shou.domain.common.ParkingSpaceInfoEntity;
import com.shou.domain.park.model.ParkingSpaceEntity;

/**
* @author Nemo
* @description 针对表【parkingspaces(车位表，记录每个车位的状态和相关信息)】的数据库操作Service
* @createDate 2025-02-07 22:10:51
*/
public interface IParkingSpaceRepository {
    /**
     * 增加车位
     * @param parkingSpace 车位对象
     */
    void insert(ParkingSpaceEntity parkingSpace);

    /**
     * 更新车位
     * @param parkingSpace 车位对象
     */
    void updateParkingSpaceById(ParkingSpaceEntity parkingSpace);

    /**
     * 根据ID查询车位
     * @param id 车位ID
     * @return 车位对象
     */
    ParkingSpaceEntity getParkingSpaceById(Integer id);

    /**
     * 分页查询车位
     * @return 分页结果
     */
    IPage<ParkingSpaceEntity> getParkingSpacesPage(PageQueryEntity pageQueryEntity);

    /**
     * 根据lotCode查询车位信息
     * @param lotCode
     * @return
     */
    ParkingSpaceInfoEntity getSpacesAvailableInfoByCode(String lotCode);

    /**
     * 根据lotCode和spaceCode查询车位
     * @param lotCode
     * @param spaceCode
     * @return
     */
    ParkingSpaceEntity getParkingSpaceByCode(String lotCode, String spaceCode);
}
